package co.yixiang.serializer;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;
import java.text.DecimalFormat;

/**
 * 自定义Double类型序列化器
 * 用于将Double类型的数据格式化为两位小数的字符串
 */
public class DoubleSerializer extends JsonSerializer<Double> {

    /**
     * 序列化Double类型数据的方法
     *
     * @param value 待序列化的Double类型数据
     * @param gen 用于生成JSON数据的JsonGenerator对象
     * @param serializerProvider 提供序列化器的SerializerProvider对象
     * @throws IOException 当序列化过程中发生I/O错误时抛出
     */
    @Override
    public void serialize(Double value, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException {
        // 检查值是否非空且不等于空字符串
        if (value != null && !"".equals(value)) {
            // 创建DecimalFormat对象，用于格式化Double值为两位小数的字符串
            DecimalFormat df2 = new DecimalFormat("0.00");
            // 将格式化后的字符串写入JSON数据中
            gen.writeString(df2.format(value));
        } else {
            // 如果值为空或等于空字符串，则直接写入JSON数据中
            gen.writeString(value + "");
        }
    }
}

